package org.pet.aop;

import jakarta.annotation.Resource;
import org.aspectj.lang.ProceedingJoinPoint;
import org.aspectj.lang.annotation.Around;
import org.aspectj.lang.annotation.Aspect;
import org.pet.service.PetScienceService;
import org.springframework.stereotype.Component;

@Aspect
@Component
public class ClickCountAspect {

    @Resource
    PetScienceService petScienceService;

    // 定义切点，拦截PetScienceController中的updateClick方法
    @Around("execution(* org.pet.controller.PetScienceController.info(..))")
    public Object aroundUpdateClick(ProceedingJoinPoint joinPoint) throws Throwable {
        // 获取方法参数
        Integer id = (Integer) joinPoint.getArgs()[0];

        // 在执行原方法之前，更新点击量
        updateClickCount(id);

        // 继续执行原方法
        return joinPoint.proceed();
    }

    private void updateClickCount(Integer id) {
        // 这里添加更新点击量的逻辑
        petScienceService.updateClick(id);
        // 例如，更新数据库或缓存中的点击量计数
        // 假设有一个服务来处理点击量更新
        // clickService.updateClickCount(id, click);
    }
}